元類 (Metaclasses)
元類是創建類的「類」,用來控制類的創建過程。
class Meta(type):
def new(cls, name, bases, attrs):
print(f"Creating class {name}")
return super().new(cls, name, bases, attrs)
class MyClass(metaclass=Meta):
pass
元類的應用範圍比較小,但在需要生成類的框架或工具中非常強大。
weakref 模組
weakref 提供了一種弱引用的機制,讓你可以引用對象而不影響其被垃圾回收的可能性。
import weakref
class MyClass:
pass
obj = MyClass()
r = weakref.ref(obj)
print(r()) # 會返回 obj,除非它已被回收
weakref 可以幫助你優化內存使用,特別是在需要處理大量對象的場景。
collections 的 defaultdict
defaultdict 是一個字典子類,當你訪問不存在的鍵時,它會自動創建一個默認值,這在統計或數據處理時非常有用。
from collections import defaultdict
counts = defaultdict(int)
words = ["apple", "banana", "apple", "orange"]
for word in words:
counts[word] += 1
print(counts) # {'apple': 2, 'banana': 1, 'orange': 1}
defaultdict 讓你不用擔心處理不存在的鍵,讓代碼更加簡潔。
iter() 和 next()
iter() 和 next() 可以讓你手動控制迭代。
numbers = [1, 2, 3, 4]
it = iter(numbers)
print(next(it)) # 1
print(next(it)) # 2
手動迭代特別適合處理無限或大型序列的情況。